<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>号卡销售前端轮询逻辑</title>
    <script src="js/jquery.min.js"></script>
</head>

<body>
<h3>号卡销售前端轮询逻辑</h3>
<div id="time"></div>
<div id="result"></div>
<h4>规则</h4>
<pre>  订单受理后 会返回成功失败，现在前端不管订单失败成功，都轮询查询订单状态

  轮询返回结果 0 订单查询成功；8 订单在途；1 订单信息不存在

  先轮询1分钟 如果返回状态都是1  就把订单受理返回错误显示在页面上

  先轮询1分钟 如果返回状态有8   再轮询5分钟后终止，把订单状态显示在页面上

  先轮询1分钟 如果返回0 就把号卡吐出来给用户    </pre>
</body>
<script>
    var orderTime = 0;
    var orderIntervalTime = 5000;//轮询间隔时间 2000
    var orderTimeOut = 4000; //超时时间
    var orderTimeLimit = 60; //轮询1分钟判断
    var orderTimeLimit2 = 60*5;//轮询5分钟判断
    var orderInterval = setInterval("checkOrder()",orderIntervalTime);
    var orderSubmitCode = "1";
    var orderSubmitMsg = "1分钟轮询过了，订单受理失败原因1xxxxx";


    function checkOrder() {

        orderTime = orderTime + orderIntervalTime/1000;
        //找个只是页面显示
        $("#time").text(orderTime);
        ajaxOrder();


    }

    function ajaxOrder(){

        return $.ajax({
            url: 'http://127.0.0.1:8080/info',
            type: "post",
            dataType: "json",
            async: true,
            data:"",
            timeout:orderTimeOut,
            success:function(data){
                dealOrder(data);
            },
            error:function(XMLHttpRequest, textStatus, errorThrown){

            },
            complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
                if(status=='timeout'){//超时,status还有success,error等值的情况
                    console.log("超时---------------------");
                }
            }
        });

    }

    var order1Flag = false;//订单状态存在1 不存在
    var order8Flag = false;//订单状态存在8 在处理
    function dealOrder(data){
        var code = data.code;

        if(code == 0){
            clearInterval(orderInterval);
            $("#result").text("订单受理成功");
        }
        if(code == "1"){
            order1Flag = true;
        }
        if(code == "8"){
            order8Flag = true;
        }
        //订单状态存在1且不存在8 订单受理失败情况
        if(orderTime >= orderTimeLimit && order1Flag && !order8Flag){
            //定时结束
            clearInterval(orderInterval);
            $("#result").text("1分钟轮询过了，订单受理失败原因1xxxxx");
        }
        //订单状态存在8 已经过了处理时间
        if((orderTime >= orderTimeLimit2) && order8Flag){
            //定时结束
            clearInterval(orderInterval);
            $("#result").text("5分钟轮询过了，订单受理失败原因8xxxxx");
        }
    }
</script>
</html>